package Day14.entend.detail;

/**
 *继承深入讨论细节问题
 * 1.子类继承了所有的属性和方法，非私有的属性和方法可以在子类中直接访问到，但是私有属性和方法
 * 不能在子类直接访问，要通过父类提供的公共的方法去访问
 * 2.子类必须调用父类的构造器，完成父类的初始化
 * 3.当创建子类对象时，不管使用子类的哪个构造器，默认情况下总会去调用父类的无参构造器，如果父类
 * 没有提供无参构造器，则必须在子类的构造器中用super去指定父类的哪个构造器完成对父类的初始化工作
 * 否则，编译不会通过
 * 4.如果希望指定去调用父类的某个构造器，则显示的调用一下：supe    r
 * 5.super在使用的时候，必须放在构造器的第一行（super只能在构造器中使用）
 * 6.super和this都只能放在构造器的第一行，因此这两个方法不能共存在一个构造器
 * 7.java的所有类都是object类的子类，object是所有类的基类
 * 8.父类的构造器的调用不限于直接父类，将一直往上追溯到object（顶级父类）
 * 9.子类最多只能继承一个父类（直接继承），即java中是单继承机制，如何让A类继承B类C类[A类继承B类 B类继承C]
 * 10.不能滥用继承，子类和父类之间必须是is-a的逻辑关系
 */
public class ExtendsDetail {
    public static void main(String[] args) {
        System.out.println("===第一个对象===");
        Sub sub=new Sub();//创建了子类的对象Sub
        System.out.println("===第二个对象===");
        Sub sub2=new Sub("jack");//创建了子类的对象sub2
        System.out.println("===第三个对象===");
        Sub sub3=new Sub("King",10);//创建了子类对象的sub3
        sub.sayOk();
    }
}
